package juego;

import juego.*;

public class Stage{
	private static Stage instancia;
	
	private int puntuacionTotal;
	private int puntuacionNivel;
	private int nivel;
	private Flota flota;
	
	private Stage(){
		flota= new Flota();
		new Cielo(Constantes.Cielo_Ancho(),Constantes.Cielo_Alto(),Constantes.velocidadFondo());
		nivel=1;
		puntuacionTotal=0;
		puntuacionNivel=0;
	}
	
	public static Stage getInstancia(){
		if(instancia == null){
			instancia = new Stage();
		}
		return instancia;
	}
	
	static void crearNuevoStage(){
		instancia = null;
	}

	public void actualizarEventos(){
		int puntuacionCiclo=0;
		if((flota.enRetirada())|| (puntuacionNivel>1000)){
			pasarDeStage();
		}
					
		puntuacionNivel+=puntuacionCiclo;
		
		puntuacionTotal+=puntuacionCiclo;/*opc: otra manera es poner que se actualice unicamente al pasar de stage 			y en el true
		de finDelJuego*/
	}
	
	public boolean finDelJuego(){
		if((nivel>=30)/*||cielo.jugadorMurio()*/){
			return true;
		}else{
			return false;
		}
	}

	public int puntuacionTotal(){
		return puntuacionTotal;
	}
	
	private void pasarDeStage(){
		nivel++;
		puntuacionNivel=0;
		//opcional: Reinstanciar por una nueva flota y/o cielo. (Si se quiere cambiar).
	}
	
	private void puntosSumar(int puntosASumar){
		puntuacionNivel += puntosASumar;
	}
}

